home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacApp Release 10 / MacApp Release 10 - HD Ready / Libraries / Framework / Sources / UAdorners.cp < prev    next >
Encoding:
Text File  |  1996-04-03  |  45.1 KB  |  1,463 lines  |  [TEXT/MPS ]

  1. //----------------------------------------------------------------------------------------
  2. // UAdorners.cp 
  3. // Copyright © 1984-96 by Apple Computer, Inc. All rights reserved.
  4. //----------------------------------------------------------------------------------------
  5.  
  6. #ifndef __UADORNERS__
  7. #include "UAdorners.h"
  8. #endif
  9.  
  10. // MacApp
  11.  
  12. #ifndef __UCOREGLOBALS__
  13. #include "UCoreGlobals.h"
  14. #endif
  15.  
  16. #ifndef __UGEOMETRY__
  17. #include "UGeometry.h"
  18. #endif
  19.  
  20. #ifndef __ULIST__
  21. #include "UList.h"
  22. #endif
  23.  
  24. #ifndef __UMACAPPGLOBALS__
  25. #include "UMacAppGlobals.h"
  26. #endif
  27.  
  28. #ifndef __USTREAM__
  29. #include "UStream.h"
  30. #endif
  31.  
  32. #ifndef __UWINDOW__
  33. #include "UWindow.h"
  34. #endif
  35.  
  36. // Toolbox
  37.  
  38. #ifndef __ERRORS__
  39. #include <Errors.h>
  40. #endif
  41.  
  42. #ifndef __TOOLUTILS__
  43. #include <ToolUtils.h>
  44. #endif
  45.  
  46.  
  47. //----------------------------------------------------------------------------------------
  48. // Definition for global variables declared in interface:
  49.  
  50. // Global, pre-allocated, shared adorners
  51.  
  52. TDimAdorner* gDimAdorner;
  53. TDrawAdorner* gDrawAdorner;
  54. TEraseAdorner* gEraseAdorner;
  55. THiliteAdorner* gHiliteAdorner;
  56. TPrintAdorner* gPrintAdorner;
  57. TResizeIconAdorner* gResizeIconAdorner;
  58. TSelectionAdorner* gSelectionAdorner;
  59.  
  60.  
  61. // Setup some basic RGB greyscale colors 
  62. CRGBColor gRGBVeryLtGray(58333,
  63.                          58333,
  64.                          58333);                // Setup the very light gray global
  65. CRGBColor gRGBLtGray(49152,
  66.                      49152,
  67.                      49152);                    // Setup the light gray global;
  68. CRGBColor gRGBGray(37000,
  69.                    37000,
  70.                    37000);                        // Setup the medium gray global;
  71. CRGBColor gRGBDkGray(20000,
  72.                      20000,
  73.                      20000);                    // Setup the dark gray global;
  74.  
  75.  
  76. //========================================================================================
  77. // CLASS CAdornerIterator
  78. //========================================================================================
  79. #undef Inherited
  80. #define Inherited CArrayIterator
  81.  
  82. //----------------------------------------------------------------------------------------
  83. // CAdornerIterator::CAdornerIterator:
  84. //----------------------------------------------------------------------------------------
  85. #pragma segment MAAdornerRes
  86.  
  87. CAdornerIterator::CAdornerIterator(const TView* theView,
  88.                                    ArrayIndex itsLowBound,
  89.                                    ArrayIndex itsHighBound,
  90.                                    Boolean itsForward) :
  91.     CArrayIterator(theView ? theView->fAdorners : NULL, itsLowBound, itsHighBound, itsForward)
  92. {
  93. }
  94. // CAdornerIterator::CAdornerIterator
  95.  
  96. //----------------------------------------------------------------------------------------
  97. // CAdornerIterator::CAdornerIterator:
  98. //----------------------------------------------------------------------------------------
  99. #pragma segment MAAdornerRes
  100.  
  101. CAdornerIterator::CAdornerIterator(const TView* theView,
  102.                                    Boolean itsForward) :
  103.     CArrayIterator(theView ? theView->fAdorners : NULL, itsForward)
  104. {
  105. }
  106. // CAdornerIterator::CAdornerIterator
  107.  
  108. //----------------------------------------------------------------------------------------
  109. // CAdornerIterator::CAdornerIterator:
  110. //----------------------------------------------------------------------------------------
  111. #pragma segment MAAdornerRes
  112.  
  113. CAdornerIterator::CAdornerIterator(const TView* theView) :
  114.     CArrayIterator(theView ? theView->fAdorners : NULL, kIterateForward)
  115. {
  116. }
  117. // CAdornerIterator::CAdornerIterator
  118.  
  119. //----------------------------------------------------------------------------------------
  120. // CAdornerIterator::CAdornerIterator:
  121. //----------------------------------------------------------------------------------------
  122. #pragma segment MAAdornerRes
  123.  
  124. CAdornerIterator::CAdornerIterator(TAdornerList* theAdornerList) :
  125.     CArrayIterator(theAdornerList, kIterateForward)
  126. {
  127. }
  128. // CAdornerIterator::CAdornerIterator
  129.  
  130. //----------------------------------------------------------------------------------------
  131. // CAdornerIterator::~CAdornerIterator:
  132. //----------------------------------------------------------------------------------------
  133. #pragma segment MAAdornerRes
  134.  
  135. CAdornerIterator::~CAdornerIterator()
  136. {
  137. }
  138.  
  139. //----------------------------------------------------------------------------------------
  140. // CAdornerIterator::CurrentAdorner:
  141. //----------------------------------------------------------------------------------------
  142. #pragma segment MAAdornerRes
  143.  
  144. TAdorner* CAdornerIterator::CurrentAdorner()
  145. {
  146.     return ((TAdornerList *)fDynamicArray)->AdornerAt(fCurrentIndex);
  147. }
  148.  
  149. //----------------------------------------------------------------------------------------
  150. // CAdornerIterator::FirstAdorner:
  151. //----------------------------------------------------------------------------------------
  152. #pragma segment MAAdornerRes
  153.  
  154. TAdorner* CAdornerIterator::FirstAdorner()
  155. {
  156.     this->Reset();
  157.  
  158.     return More() ? ((TAdornerList *)fDynamicArray)->AdornerAt(fCurrentIndex) : NULL;
  159. }
  160.  
  161. //----------------------------------------------------------------------------------------
  162. // CAdornerIterator::NextAdorner:
  163. //----------------------------------------------------------------------------------------
  164. #pragma segment MAAdornerRes
  165.  
  166. TAdorner* CAdornerIterator::NextAdorner()
  167. {
  168.     this->Advance();
  169.  
  170.     return More() ? ((TAdornerList *)fDynamicArray)->AdornerAt(fCurrentIndex) : NULL;
  171. }
  172.  
  173.  
  174. //========================================================================================
  175. // GLOBAL Procedures
  176. //========================================================================================
  177. #undef Inherited
  178.  
  179. //----------------------------------------------------------------------------------------
  180. // InitUAdorners:
  181. //----------------------------------------------------------------------------------------
  182. #pragma segment MAInit
  183.  
  184. void InitUAdorners()
  185. {
  186.     // Register the system-supplied adorners 
  187.  
  188.     MA_REGISTER_CLASS(TAdornerList);
  189.  
  190.     MA_REGISTER_SIGNATURE(TCompatibilityAdorner, kCompatibilityAdorner);
  191.     MA_REGISTER_SIGNATURE(TDimAdorner, kDimAdorner);
  192.     MA_REGISTER_SIGNATURE(TDrawAdorner, kDrawAdorner);
  193.     MA_REGISTER_SIGNATURE(TEraseAdorner, kEraseAdorner);
  194.     MA_REGISTER_SIGNATURE(TFrameAdorner, kFrameAdorner);
  195.     MA_REGISTER_SIGNATURE(THiliteAdorner, kHiliteAdorner);
  196.     MA_REGISTER_SIGNATURE(TLineBottomAdorner, kLineBottomAdorner);
  197.     MA_REGISTER_SIGNATURE(TLineLeftAdorner, kLineLeftAdorner);
  198.     MA_REGISTER_SIGNATURE(TLineRightAdorner, kLineRightAdorner);
  199.     MA_REGISTER_SIGNATURE(TLineTopAdorner, kLineTopAdorner);
  200.     MA_REGISTER_SIGNATURE(TOvalAdorner, kOvalAdorner);
  201.     MA_REGISTER_SIGNATURE(TPrintAdorner, kPrintAdorner);
  202.     MA_REGISTER_SIGNATURE(TResizeIconAdorner, kResizeIconAdorner);
  203.     MA_REGISTER_SIGNATURE(TRRectAdorner, kRRectAdorner);
  204.     MA_REGISTER_SIGNATURE(TSelectionAdorner, kSelectionAdorner);
  205.     MA_REGISTER_SIGNATURE(TShadowedFrameAdorner, kShadowedFrameAdorner);
  206.  
  207.     // Create the global, shared, pre-allocated adorners
  208.  
  209.     gDimAdorner = new TDimAdorner;
  210.     gDimAdorner->IDimAdorner();
  211.  
  212.     gDrawAdorner = new TDrawAdorner;
  213.     gDrawAdorner->IDrawAdorner();
  214.  
  215.     gEraseAdorner = new TEraseAdorner;
  216.     gEraseAdorner->IEraseAdorner();
  217.  
  218.     gHiliteAdorner = new THiliteAdorner;
  219.     gHiliteAdorner->IHiliteAdorner();
  220.  
  221.     gPrintAdorner = new TPrintAdorner;
  222.     gPrintAdorner->IPrintAdorner();
  223.  
  224.     gResizeIconAdorner = new TResizeIconAdorner;
  225.     gResizeIconAdorner->IResizeIconAdorner();
  226.  
  227.     gSelectionAdorner = new TSelectionAdorner;
  228.     gSelectionAdorner->ISelectionAdorner();
  229. }
  230.  
  231. //----------------------------------------------------------------------------------------
  232. // NewStdAdorner:
  233. //----------------------------------------------------------------------------------------
  234. #pragma segment MAAdornerNonRes
  235.  
  236. TAdorner* NewStdAdorner(IDType signature,
  237.                         const ClassName& className,
  238.                         IDType itsID,
  239.                         Boolean freeOnDeletion)
  240. {
  241.     TAdorner * anAdorner = (TAdorner *)NewObjectBySignature(signature, className);
  242.     anAdorner->IAdorner(itsID, freeOnDeletion);
  243.     return anAdorner;
  244. }
  245.  
  246.  
  247. //========================================================================================
  248. // CLASS TAdorner
  249. //========================================================================================
  250. #undef Inherited
  251. #define Inherited TObject
  252.  
  253. #pragma segment MAAdornerNonRes
  254. MA_DEFINE_CLASS_M1(TAdorner,
  255.                    Inherited);
  256.  
  257. //----------------------------------------------------------------------------------------
  258. // TAdorner constructor 
  259. //----------------------------------------------------------------------------------------
  260. #pragma segment MAAdornerNonRes
  261.  
  262. TAdorner::TAdorner() :
  263.     fIdentifier(kNoIdentifier),
  264.     fFreeOnDeletion(TRUE)
  265. {
  266. }
  267. // TAdorner::TAdorner
  268.  
  269. //----------------------------------------------------------------------------------------
  270. // TAdorner destructor
  271. //----------------------------------------------------------------------------------------
  272. #pragma segment MADestructorRes
  273.  
  274. TAdorner::~TAdorner()
  275. {
  276. }
  277.  
  278. //----------------------------------------------------------------------------------------
  279. // TAdorner::IAdorner:
  280. //----------------------------------------------------------------------------------------
  281. #pragma segment MAAdornerNonRes
  282.  
  283. void TAdorner::IAdorner(IDType itsID,
  284.                         Boolean freeOnDeletion)
  285. {
  286.     IObject();
  287.  
  288.     fIdentifier = itsID;
  289.     fFreeOnDeletion = freeOnDeletion;
  290. }
  291.  
  292. //----------------------------------------------------------------------------------------
  293. // TAdorner::AddedToView:
  294. //----------------------------------------------------------------------------------------
  295. #pragma segment MAAdornerNonRes
  296.  
  297. void TAdorner::AddedToView(TView*                /* itsView */ )
  298. {
  299. }
  300.  
  301. //----------------------------------------------------------------------------------------
  302. // TAdorner::RemovedFromView:
  303. //----------------------------------------------------------------------------------------
  304. #pragma segment MAAdornerNonRes
  305.  
  306. void TAdorner::RemovedFromView(TView*            /* itsView */ )
  307. {
  308.     if (fFreeOnDeletion)
  309.         Free();
  310. }
  311.  
  312. //----------------------------------------------------------------------------------------
  313. // TAdorner::ReadFrom:
  314. //----------------------------------------------------------------------------------------
  315. #pragma segment MAReadResource
  316.  
  317. void TAdorner::ReadFrom(TStream* aStream)        // override 
  318. {
  319.     Inherited::ReadFrom(aStream);
  320.  
  321.     fIdentifier = aStream->ReadIDType();
  322.     fFreeOnDeletion = aStream->ReadBoolean();
  323. }
  324.  
  325. //----------------------------------------------------------------------------------------
  326. // TAdorner::WriteTo:
  327. //----------------------------------------------------------------------------------------
  328. #pragma segment MAWriteResource
  329.  
  330. void TAdorner::WriteTo(TStream* aStream)        // override 
  331. {
  332.     Inherited::WriteTo(aStream);
  333.  
  334.     aStream->WriteIDType(fIdentifier);
  335.     aStream->WriteBoolean(fFreeOnDeletion);
  336. }
  337.  
  338. //----------------------------------------------------------------------------------------
  339. // TAdorner::Draw:
  340. //----------------------------------------------------------------------------------------
  341. #pragma segment MAAdornerRes
  342.  
  343. void TAdorner::Draw(TView*                        /* itsView */ ,
  344.                     const VRect&                /* area */ )
  345. {
  346. }
  347.  
  348. //----------------------------------------------------------------------------------------
  349. // TAdorner::DrawLine:
  350. //----------------------------------------------------------------------------------------
  351. #pragma segment MAAdornerRes
  352.  
  353. void TAdorner::DrawLine(VHSelect vhs,
  354.                         short lh,
  355.                         short lv,
  356.                         short lto)
  357. {
  358.     MoveToPt(CPoint(lh, lv));
  359.     if (vhs == hSel)
  360.         Line(lto - lh, 0);
  361.     else
  362.         Line(0, lto - lv);
  363. }
  364.  
  365. //----------------------------------------------------------------------------------------
  366. // TAdorner::DoHighlightSelection:
  367. //----------------------------------------------------------------------------------------
  368. #pragma segment MAAdornerRes
  369.  
  370. void TAdorner::DoHighlightSelection(TView*        /* itsView */ ,
  371.                                     const VRect&/* area */  ,
  372.                                     HLState        /* fromHL */,
  373.                                     HLState        /* toHL */)
  374. {
  375. }
  376.  
  377. //----------------------------------------------------------------------------------------
  378. // TAdorner::InvalidateAdorner:
  379. //----------------------------------------------------------------------------------------
  380. #pragma segment MAAdornerRes
  381.  
  382. void TAdorner::InvalidateAdorner(TView* itsView)
  383. {
  384.     if (itsView)
  385.         itsView->ForceRedraw();
  386. }
  387.  
  388. //----------------------------------------------------------------------------------------
  389. // TAdorner::ViewChangedFrame:
  390. //----------------------------------------------------------------------------------------
  391. #pragma segment MAAdornerNonRes
  392.  
  393. void TAdorner::ViewChangedFrame(TView*            /* itsView */ ,
  394.                                 const VRect&    /* oldFrame */ ,
  395.                                 const VRect&    /* newFrame */ ,
  396.                                 Boolean            /* invalidate */)
  397. {
  398. }
  399.  
  400. //----------------------------------------------------------------------------------------
  401. // TAdorner::DoesAdorn:
  402. //----------------------------------------------------------------------------------------
  403. #pragma segment MAAdornerRes
  404.  
  405. Boolean TAdorner::DoesAdorn(TView*                /* itsView */ )
  406. {
  407.     return TRUE;
  408. }
  409.  
  410.  
  411. //========================================================================================
  412. // CLASS TCompatibilityAdorner
  413. //========================================================================================
  414. #undef Inherited
  415. #define Inherited TAdorner
  416.  
  417. #pragma segment MAAdornerNonRes
  418. MA_DEFINE_CLASS_M1(TCompatibilityAdorner,
  419.                    Inherited);
  420.  
  421. //----------------------------------------------------------------------------------------
  422. // TCompatibilityAdorner::TCompatibilityAdorner.
  423. //----------------------------------------------------------------------------------------
  424. #pragma segment MAAdornerNonRes
  425.  
  426. TCompatibilityAdorner::TCompatibilityAdorner()
  427. {
  428.     fIdentifier = kCompatibilityAdorner;
  429.     fFreeOnDeletion = TRUE;
  430.     fAdornment = 0;
  431. }
  432.  
  433. //----------------------------------------------------------------------------------------
  434. // TCompatibilityAdorner destructor
  435. //----------------------------------------------------------------------------------------
  436. #pragma segment MADestructorRes
  437.  
  438. TCompatibilityAdorner::~TCompatibilityAdorner()
  439. {
  440. }
  441.  
  442. //----------------------------------------------------------------------------------------
  443. // TCompatibilityAdorner::ICompatibilityAdorner:
  444. //----------------------------------------------------------------------------------------
  445. #pragma segment MAAdornerNonRes
  446.  
  447. void TCompatibilityAdorner::ICompatibilityAdorner(CntlAdornment itsAdornment)
  448. {
  449.     IAdorner(kCompatibilityAdorner, kFreeOnDeletion);
  450.     fAdornment = itsAdornment;
  451. }
  452.  
  453. //----------------------------------------------------------------------------------------
  454. // TCompatibilityAdorner::GetStandardSignature:
  455. //----------------------------------------------------------------------------------------
  456. #pragma segment MAWriteResource
  457.  
  458. IDType TCompatibilityAdorner::GetStandardSignature()// override 
  459. {
  460.     return kCompatibilityAdorner;
  461. }
  462.  
  463. //----------------------------------------------------------------------------------------
  464. // TCompatibilityAdorner::ReadFrom:
  465. //----------------------------------------------------------------------------------------
  466. #pragma segment MAReadResource
  467.  
  468. void TCompatibilityAdorner::ReadFrom(TStream* aStream)// override 
  469. {
  470.     Inherited::ReadFrom(aStream);
  471.  
  472.     CntlAdornment itsAdornment;
  473.     aStream->ReadBytes(&itsAdornment, sizeof(CntlAdornment));
  474.     fAdornment = itsAdornment;
  475. }
  476.  
  477. //----------------------------------------------------------------------------------------
  478. // TCompatibilityAdorner::WriteTo:
  479. //----------------------------------------------------------------------------------------
  480. #pragma segment MAWriteResource
  481.  
  482. void TCompatibilityAdorner::WriteTo(TStream* aStream)// override 
  483. {
  484.     Inherited::WriteTo(aStream);
  485.  
  486.     CntlAdornment itsAdornment = fAdornment;
  487.     aStream->WriteBytes(&itsAdornment, sizeof(CntlAdornment));
  488. }
  489.  
  490. //----------------------------------------------------------------------------------------
  491. // TCompatibilityAdorner::Draw:
  492. //----------------------------------------------------------------------------------------
  493. #pragma segment MAAdornerRes
  494.  
  495. void TCompatibilityAdorner::Draw(TView* itsView,
  496.                                  const VRect& area)
  497. {
  498.     if (fAdornment != 0)
  499.     {
  500.         VRect itsAdornExtent;
  501.  
  502.         itsView->GetAdornExtent(itsAdornExtent);
  503.         if (!(area & itsAdornExtent).Empty())    // is there something to draw?
  504.         {
  505.             CRect qdArea(itsView->ViewToQDRect(itsAdornExtent));// convert to QD coord's 
  506.  
  507.             if (macroIn(fAdornment, adnShadow))
  508.             {
  509.                 OpenRgn();
  510.                 ShowPen();                        // so drawing occurs 
  511.             }
  512.  
  513.  
  514.             if ((fAdornment & kFrame) == kFrame)// adnFrame
  515.                 FrameRect(&qdArea);
  516.             else
  517.             {
  518.                 if (macroIn(fAdornment, adnLineTop))
  519.                     DrawLine(hSel, qdArea.left, qdArea.top, qdArea.right);
  520.  
  521.                 if (macroIn(fAdornment, adnLineLeft))
  522.                     DrawLine(vSel, qdArea.left, qdArea.top, qdArea.bottom);
  523.  
  524.                 if (macroIn(fAdornment, adnLineBottom))
  525.                 {
  526.                     PenState pnState;
  527.                     GetPenState(&pnState);
  528.                     DrawLine(hSel, qdArea.left, qdArea.bottom - pnState.pnSize.v, qdArea.right);// account for pen height 
  529.                 }
  530.  
  531.                 if (macroIn(fAdornment, adnLineRight))
  532.                 {
  533.                     PenState pnState;
  534.                     GetPenState(&pnState);
  535.                     DrawLine(vSel, qdArea.right - pnState.pnSize.h, qdArea.top, qdArea.bottom);// account for pen width 
  536.                 }
  537.             }
  538.  
  539.             if (macroIn(fAdornment, adnOval))
  540.                 FrameOval(qdArea);
  541.  
  542.             if (macroIn(fAdornment, adnRRect))
  543.                 FrameRoundRect(qdArea, 16, 16);
  544.  
  545.             if (macroIn(fAdornment, adnShadow))
  546.             {
  547.                 PenState pnState;
  548.  
  549.                 CTemporaryRegion tempRgn;
  550.                 CTemporaryRegion tempRgn2;
  551.  
  552.                 HidePen();
  553.                 CloseRgn(tempRgn);
  554.  
  555.                 CopyRgn(tempRgn, tempRgn2);
  556.                 GetPenState(&pnState);
  557.                 OffsetRgn(tempRgn2, pnState.pnSize.h, pnState.pnSize.v);
  558.                 DiffRgn(tempRgn2, tempRgn, tempRgn2);
  559.                 PaintRgn(tempRgn2);
  560.             }
  561.         }
  562.     }
  563. }
  564.  
  565.  
  566. //========================================================================================
  567. // CLASS TDimAdorner
  568. //========================================================================================
  569. #undef Inherited
  570. #define Inherited TAdorner
  571.  
  572. #pragma segment MAAdornerNonRes
  573. MA_DEFINE_CLASS_M1(TDimAdorner,
  574.                    Inherited);
  575.  
  576. //----------------------------------------------------------------------------------------
  577. // TDimAdorner constructor
  578. //----------------------------------------------------------------------------------------
  579. #pragma segment MAAdornerNonRes
  580.  
  581. TDimAdorner::TDimAdorner()
  582. {
  583.     fIdentifier = kDimAdorner;
  584.     fFreeOnDeletion = FALSE;
  585. }
  586.  
  587. //----------------------------------------------------------------------------------------
  588. // TDimAdorner destructor
  589. //----------------------------------------------------------------------------------------
  590. #pragma segment MADestructorRes
  591.  
  592. TDimAdorner::~TDimAdorner()
  593. {
  594. }
  595.  
  596. //----------------------------------------------------------------------------------------
  597. // TDimAdorner::GetStandardSignature:
  598. //----------------------------------------------------------------------------------------
  599. #pragma segment MAWriteResource
  600.  
  601. IDType TDimAdorner::GetStandardSignature()        // override 
  602. {
  603.     return kDimAdorner;
  604. }
  605.  
  606. //----------------------------------------------------------------------------------------
  607. // TDimAdorner::Draw:
  608. //----------------------------------------------------------------------------------------
  609. #pragma segment MAAdornerRes
  610.  
  611. void TDimAdorner::Draw(TView* itsView,
  612.                        const VRect&)
  613. {
  614.     itsView->Dim();
  615. }
  616.  
  617.  
  618. //========================================================================================
  619. // CLASS TDrawAdorner
  620. //========================================================================================
  621. #undef Inherited
  622. #define Inherited TAdorner
  623.  
  624. #pragma segment MAAdornerNonRes
  625. MA_DEFINE_CLASS_M1(TDrawAdorner,
  626.                    Inherited);
  627.  
  628. //----------------------------------------------------------------------------------------
  629. // TDrawAdorner constructor
  630. //----------------------------------------------------------------------------------------
  631. #pragma segment MAAdornerNonRes
  632.  
  633. TDrawAdorner::TDrawAdorner()
  634. {
  635.     fIdentifier = kDrawAdorner;
  636.     fFreeOnDeletion = FALSE;
  637. }
  638.  
  639. //----------------------------------------------------------------------------------------
  640. // TDrawAdorner destructor
  641. //----------------------------------------------------------------------------------------
  642. #pragma segment MADestructorRes
  643.  
  644. TDrawAdorner::~TDrawAdorner()
  645. {
  646. }
  647.  
  648. //----------------------------------------------------------------------------------------
  649. // TDrawAdorner::GetStandardSignature:
  650. //----------------------------------------------------------------------------------------
  651. #pragma segment MAWriteResource
  652.  
  653. IDType TDrawAdorner::GetStandardSignature()        // override 
  654. {
  655.     return kDrawAdorner;
  656. }
  657.  
  658. //----------------------------------------------------------------------------------------
  659. // TDrawAdorner::Draw:
  660. //----------------------------------------------------------------------------------------
  661. #pragma segment MAAdornerRes
  662.  
  663. void TDrawAdorner::Draw(TView* itsView,
  664.                         const VRect& area)
  665. {
  666.     PenNormal();
  667.     itsView->Draw(area);
  668. }
  669.  
  670.  
  671. //========================================================================================
  672. // CLASS TEraseAdorner
  673. //========================================================================================
  674. #undef Inherited
  675. #define Inherited TAdorner
  676.  
  677. #pragma segment MAAdornerNonRes
  678. MA_DEFINE_CLASS_M1(TEraseAdorner,
  679.                    Inherited);
  680.  
  681. //----------------------------------------------------------------------------------------
  682. // TEraseAdorner constructor
  683. //----------------------------------------------------------------------------------------
  684. #pragma segment MAAdornerNonRes
  685.  
  686. TEraseAdorner::TEraseAdorner()
  687. {
  688.     fIdentifier = kEraseAdorner;
  689.     fFreeOnDeletion = FALSE;
  690. }
  691.  
  692. //----------------------------------------------------------------------------------------
  693. // TEraseAdorner destructor
  694. //----------------------------------------------------------------------------------------
  695. #pragma segment MADestructorRes
  696.  
  697. TEraseAdorner::~TEraseAdorner()
  698. {
  699. }
  700.  
  701. //----------------------------------------------------------------------------------------
  702. // TEraseAdorner::GetStandardSignature:
  703. //----------------------------------------------------------------------------------------
  704. #pragma segment MAWriteResource
  705.  
  706. IDType TEraseAdorner::GetStandardSignature()    // override 
  707. {
  708.     return kEraseAdorner;
  709. }
  710.  
  711. //----------------------------------------------------------------------------------------
  712. // TEraseAdorner::Draw:
  713. //----------------------------------------------------------------------------------------
  714. #pragma segment MAAdornerRes
  715.  
  716. void TEraseAdorner::Draw(TView* itsView,
  717.                          const VRect& area)
  718. {
  719.     EraseRect(&itsView->ViewToQDRect(area));
  720. }
  721.  
  722.  
  723. //========================================================================================
  724. // CLASS THiliteAdorner:
  725. //========================================================================================
  726. #undef Inherited
  727. #define Inherited TAdorner
  728.  
  729. #pragma segment MAAdornerNonRes
  730. MA_DEFINE_CLASS_M1(THiliteAdorner,
  731.                    Inherited);
  732.  
  733. //----------------------------------------------------------------------------------------
  734. // THiliteAdorner::THiliteAdorner:
  735. //----------------------------------------------------------------------------------------
  736. #pragma segment MAAdornerNonRes
  737.  
  738. THiliteAdorner::THiliteAdorner()
  739. {
  740.     fIdentifier = kHiliteAdorner;
  741.     fFreeOnDeletion = FALSE;
  742. }
  743.  
  744. //----------------------------------------------------------------------------------------
  745. // THiliteAdorner destructor
  746. //----------------------------------------------------------------------------------------
  747. #pragma segment MADestructorRes
  748.  
  749. THiliteAdorner::~THiliteAdorner()
  750. {
  751. }
  752.  
  753. //----------------------------------------------------------------------------------------
  754. // THiliteAdorner::GetStandardSignature:
  755. //----------------------------------------------------------------------------------------
  756. #pragma segment MAWriteResource
  757.  
  758. IDType THiliteAdorner::GetStandardSignature()    // override 
  759. {
  760.     return kHiliteAdorner;
  761. }
  762.  
  763. //----------------------------------------------------------------------------------------
  764. // THiliteAdorner::Draw:
  765. //----------------------------------------------------------------------------------------
  766. #pragma segment MAAdornerRes
  767.  
  768. void THiliteAdorner::Draw(TView* itsView,
  769.                           const VRect&)
  770. {
  771.     itsView->Hilite();
  772. }
  773.  
  774.  
  775. //========================================================================================
  776. // CLASS TResizeIconAdorner
  777. //========================================================================================
  778. #undef Inherited
  779. #define Inherited TAdorner
  780.  
  781. #pragma segment MAAdornerNonRes
  782. MA_DEFINE_CLASS_M1(TResizeIconAdorner,
  783.                    Inherited);
  784.  
  785. //----------------------------------------------------------------------------------------
  786. // TResizeIconAdorner constructor
  787. //----------------------------------------------------------------------------------------
  788. #pragma segment MAAdornerNonRes
  789.  
  790. TResizeIconAdorner::TResizeIconAdorner()
  791. {
  792.     fIdentifier = kResizeIconAdorner;
  793.     fFreeOnDeletion = FALSE;
  794. }
  795.  
  796. //----------------------------------------------------------------------------------------
  797. // TResizeIconAdorner destructor
  798. //----------------------------------------------------------------------------------------
  799. #pragma segment MADestructorRes
  800.  
  801. TResizeIconAdorner::~TResizeIconAdorner()
  802. {
  803. }
  804.  
  805. //----------------------------------------------------------------------------------------
  806. // TResizeIconAdorner::GetStandardSignature:
  807. //----------------------------------------------------------------------------------------
  808. #pragma segment MAWriteResource
  809.  
  810. IDType TResizeIconAdorner::GetStandardSignature()// override 
  811. {
  812.     return kResizeIconAdorner;
  813. }
  814.  
  815. //----------------------------------------------------------------------------------------
  816. // TResizeIconAdorner::DoHighlightSelection:
  817. //----------------------------------------------------------------------------------------
  818. #pragma segment MAAdornerRes
  819.  
  820. void TResizeIconAdorner::DoHighlightSelection(TView* itsView,
  821.                                               const VRect&/* area */  ,
  822.                                               HLState/* fromHL */ ,
  823.                                               HLState/* toHL */ )
  824. {
  825.     ((TWindow *)itsView)->DrawResizeIcon();
  826. }
  827.  
  828.  
  829. //========================================================================================
  830. // CLASS TSelectionAdorner
  831. //========================================================================================
  832. #undef Inherited
  833. #define Inherited TAdorner
  834.  
  835. #pragma segment MAAdornerNonRes
  836. MA_DEFINE_CLASS_M1(TSelectionAdorner,
  837.                    Inherited);
  838.  
  839. //----------------------------------------------------------------------------------------
  840. // TSelectionAdorner constructor
  841. //----------------------------------------------------------------------------------------
  842. #pragma segment MAAdornerNonRes
  843.  
  844. TSelectionAdorner::TSelectionAdorner()
  845. {
  846.     fIdentifier = kSelectionAdorner;
  847.     fFreeOnDeletion = FALSE;
  848. }
  849.  
  850. //----------------------------------------------------------------------------------------
  851. // TSelectionAdorner destructor
  852. //----------------------------------------------------------------------------------------
  853. #pragma segment MADestructorRes
  854.  
  855. TSelectionAdorner::~TSelectionAdorner()
  856. {
  857. }
  858.  
  859. //----------------------------------------------------------------------------------------
  860. // TSelectionAdorner::GetStandardSignature:
  861. //----------------------------------------------------------------------------------------
  862. #pragma segment MAWriteResource
  863.  
  864. IDType TSelectionAdorner::GetStandardSignature()// override 
  865. {
  866.     return kSelectionAdorner;
  867. }
  868.  
  869. //----------------------------------------------------------------------------------------
  870. // TSelectionAdorner::DoHighlightSelection:
  871. //----------------------------------------------------------------------------------------
  872. #pragma segment MAAdornerRes
  873.  
  874. void TSelectionAdorner::DoHighlightSelection(TView* itsView,
  875.                                              const VRect&/* area */  ,
  876.                                              HLState fromHL,
  877.                                              HLState toHL)
  878. {
  879.     PenNormal();
  880.     itsView->DoHighlightSelection(fromHL, toHL);
  881. }
  882.  
  883.  
  884. //========================================================================================
  885. // CLASS TPrintAdorner
  886. //========================================================================================
  887. #undef Inherited
  888. #define Inherited TAdorner
  889.  
  890. #pragma segment MAAdornerNonRes
  891. MA_DEFINE_CLASS_M1(TPrintAdorner,
  892.                    Inherited);
  893.  
  894. //----------------------------------------------------------------------------------------
  895. // TPrintAdorner constructor
  896. //----------------------------------------------------------------------------------------
  897. #pragma segment MAAdornerNonRes
  898.  
  899. TPrintAdorner::TPrintAdorner()
  900. {
  901.     fIdentifier = kPrintAdorner;
  902.     fFreeOnDeletion = FALSE;
  903. }
  904.  
  905. //----------------------------------------------------------------------------------------
  906. // TPrintAdorner destructor
  907. //----------------------------------------------------------------------------------------
  908. #pragma segment MADestructorRes
  909.  
  910. TPrintAdorner::~TPrintAdorner()
  911. {
  912. }
  913.  
  914. //----------------------------------------------------------------------------------------
  915. // TPrintAdorner::GetStandardSignature:
  916. //----------------------------------------------------------------------------------------
  917. #pragma segment MAWriteResource
  918.  
  919. IDType TPrintAdorner::GetStandardSignature()    // override 
  920. {
  921.     return kPrintAdorner;
  922. }
  923.  
  924. //----------------------------------------------------------------------------------------
  925. // TPrintAdorner::DoHighlightSelection:
  926. //----------------------------------------------------------------------------------------
  927. #pragma segment MAAdornerRes
  928.  
  929. void TPrintAdorner::DoHighlightSelection(TView* itsView,
  930.                                          const VRect& area,
  931.                                          HLState fromHL,
  932.                                          HLState/* toHL */ )
  933. {
  934.     // only do this in the "HandleDraw" case; in which case "fromHL" is hlOff 
  935.     if (fromHL == hlOff)
  936.         itsView->DoDrawPrintFeedback(area);
  937. }
  938.  
  939.  
  940. //========================================================================================
  941. // CLASS TFrameAdorner
  942. //========================================================================================
  943. #undef Inherited
  944. #define Inherited TAdorner
  945.  
  946. #pragma segment MAAdornerNonRes
  947. MA_DEFINE_CLASS_M1(TFrameAdorner,
  948.                    Inherited);
  949.  
  950. //----------------------------------------------------------------------------------------
  951. // TFrameAdorner destructor
  952. //----------------------------------------------------------------------------------------
  953. #pragma segment MADestructorRes
  954.  
  955. TFrameAdorner::~TFrameAdorner()
  956. {
  957. }
  958.  
  959. //----------------------------------------------------------------------------------------
  960. // TFrameAdorner::GetStandardSignature:
  961. //----------------------------------------------------------------------------------------
  962. #pragma segment MAWriteResource
  963.  
  964. IDType TFrameAdorner::GetStandardSignature()    // override 
  965. {
  966.     return kFrameAdorner;
  967. }
  968.  
  969. //----------------------------------------------------------------------------------------
  970. // TFrameAdorner::Draw:
  971. //----------------------------------------------------------------------------------------
  972. #pragma segment MAAdornerRes
  973.  
  974. void TFrameAdorner::Draw(TView* itsView,
  975.                          const VRect& area)
  976. {
  977.     VRect itsAdornExtent;
  978.     itsView->GetAdornExtent(itsAdornExtent);
  979.  
  980.     if (!(area & itsAdornExtent).Empty())        // is there something to draw?
  981.         FrameRect(&itsView->ViewToQDRect(itsAdornExtent));
  982. }
  983.  
  984.  
  985. //========================================================================================
  986. // CLASS TShadowedFrameAdorner
  987. //========================================================================================
  988. #undef Inherited
  989. #define Inherited TAdorner
  990.  
  991. #pragma segment MAAdornerNonRes
  992. MA_DEFINE_CLASS_M1(TShadowedFrameAdorner,
  993.                    Inherited);
  994.  
  995. //----------------------------------------------------------------------------------------
  996. // TShadowedFrameAdorner destructor
  997. //----------------------------------------------------------------------------------------
  998. #pragma segment MADestructorRes
  999.  
  1000. TShadowedFrameAdorner::~TShadowedFrameAdorner()
  1001. {
  1002. }
  1003.  
  1004. //----------------------------------------------------------------------------------------
  1005. // TShadowedFrameAdorner::GetStandardSignature:
  1006. //----------------------------------------------------------------------------------------
  1007. #pragma segment MAWriteResource
  1008.  
  1009. IDType TShadowedFrameAdorner::GetStandardSignature()// override 
  1010. {
  1011.     return kShadowedFrameAdorner;
  1012. }
  1013.  
  1014. //----------------------------------------------------------------------------------------
  1015. // TShadowedFrameAdorner::Draw:
  1016. //----------------------------------------------------------------------------------------
  1017. #pragma segment MAAdornerRes
  1018.  
  1019. void TShadowedFrameAdorner::Draw(TView* itsView,
  1020.                                  const VRect& area)
  1021. {
  1022.     VRect itsAdornExtent;
  1023.     itsView->GetAdornExtent(itsAdornExtent);
  1024.  
  1025.     if (!(area & itsAdornExtent).Empty())        // is there something to draw?
  1026.     {
  1027.         CRect qdArea(itsView->ViewToQDRect(itsAdornExtent));// convert to QD coord's 
  1028.         qdArea[botRight] -= CPoint(1, 1);
  1029.  
  1030.         PenSize(1, 1);
  1031.         FrameRect(qdArea);
  1032.         MoveTo(qdArea.left + 1, qdArea.bottom);
  1033.         LineToPt(qdArea[botRight]);
  1034.         LineTo(qdArea.right, qdArea.top + 1);
  1035.     }
  1036. }
  1037.  
  1038.  
  1039. //========================================================================================
  1040. // CLASS TLineBottomAdorner
  1041. //========================================================================================
  1042. #undef Inherited
  1043. #define Inherited TAdorner
  1044.  
  1045. #pragma segment MAAdornerNonRes
  1046. MA_DEFINE_CLASS_M1(TLineBottomAdorner,
  1047.                    Inherited);
  1048.  
  1049. //----------------------------------------------------------------------------------------
  1050. // TLineBottomAdorner destructor
  1051. //----------------------------------------------------------------------------------------
  1052. #pragma segment MADestructorRes
  1053.  
  1054. TLineBottomAdorner::~TLineBottomAdorner()
  1055. {
  1056. }
  1057.  
  1058. //----------------------------------------------------------------------------------------
  1059. // TLineBottomAdorner::GetStandardSignature:
  1060. //----------------------------------------------------------------------------------------
  1061. #pragma segment MAWriteResource
  1062.  
  1063. IDType TLineBottomAdorner::GetStandardSignature()// override 
  1064. {
  1065.     return kLineBottomAdorner;
  1066. }
  1067.  
  1068. //----------------------------------------------------------------------------------------
  1069. // TLineBottomAdorner::Draw:
  1070. //----------------------------------------------------------------------------------------
  1071. #pragma segment MAAdornerRes
  1072.  
  1073. void TLineBottomAdorner::Draw(TView* itsView,
  1074.                               const VRect& area)
  1075. {
  1076.     VRect itsAdornExtent;
  1077.     itsView->GetAdornExtent(itsAdornExtent);
  1078.  
  1079.     if (!(area & itsAdornExtent).Empty())        // is there something to draw?
  1080.     {
  1081.         PenState pnState;
  1082.         GetPenState(&pnState);
  1083.         CRect qdArea = itsView->ViewToQDRect(itsAdornExtent);// convert to QD coord's 
  1084.         DrawLine(hSel, qdArea.left, qdArea.bottom - pnState.pnSize.v, qdArea.right);// account for pen height 
  1085.     }
  1086. }
  1087.  
  1088.  
  1089. //========================================================================================
  1090. // CLASS TLineLeftAdorner
  1091. //========================================================================================
  1092. #undef Inherited
  1093. #define Inherited TAdorner
  1094.  
  1095. #pragma segment MAAdornerNonRes
  1096. MA_DEFINE_CLASS_M1(TLineLeftAdorner,
  1097.                    Inherited);
  1098.  
  1099. //----------------------------------------------------------------------------------------
  1100. // TLineLeftAdorner destructor
  1101. //----------------------------------------------------------------------------------------
  1102. #pragma segment MADestructorRes
  1103.  
  1104. TLineLeftAdorner::~TLineLeftAdorner()
  1105. {
  1106. }
  1107.  
  1108. //----------------------------------------------------------------------------------------
  1109. // TLineLeftAdorner::GetStandardSignature:
  1110. //----------------------------------------------------------------------------------------
  1111. #pragma segment MAWriteResource
  1112.  
  1113. IDType TLineLeftAdorner::GetStandardSignature()    // override 
  1114. {
  1115.     return kLineLeftAdorner;
  1116. }
  1117.  
  1118. //----------------------------------------------------------------------------------------
  1119. // TLineLeftAdorner::Draw:
  1120. //----------------------------------------------------------------------------------------
  1121. #pragma segment MAAdornerRes
  1122.  
  1123. void TLineLeftAdorner::Draw(TView* itsView,
  1124.                             const VRect& area)
  1125. {
  1126.     VRect itsAdornExtent;
  1127.     itsView->GetAdornExtent(itsAdornExtent);
  1128.  
  1129.     if (!(area & itsAdornExtent).Empty())        // is there something to draw?
  1130.     {
  1131.         CRect qdArea(itsView->ViewToQDRect(itsAdornExtent));// convert to QD coord's 
  1132.         DrawLine(vSel, qdArea.left, qdArea.top, qdArea.bottom);
  1133.     }
  1134. }
  1135.  
  1136.  
  1137. //========================================================================================
  1138. // CLASS TLineRightAdorner
  1139. //========================================================================================
  1140. #undef Inherited
  1141. #define Inherited TAdorner
  1142.  
  1143. #pragma segment MAAdornerNonRes
  1144. MA_DEFINE_CLASS_M1(TLineRightAdorner,
  1145.                    Inherited);
  1146.  
  1147. //----------------------------------------------------------------------------------------
  1148. // TLineRightAdorner destructor
  1149. //----------------------------------------------------------------------------------------
  1150. #pragma segment MADestructorRes
  1151.  
  1152. TLineRightAdorner::~TLineRightAdorner()
  1153. {
  1154. }
  1155.  
  1156. //----------------------------------------------------------------------------------------
  1157. // TLineRightAdorner::GetStandardSignature:
  1158. //----------------------------------------------------------------------------------------
  1159. #pragma segment MAWriteResource
  1160.  
  1161. IDType TLineRightAdorner::GetStandardSignature()// override 
  1162. {
  1163.     return kLineRightAdorner;
  1164. }
  1165.  
  1166. //----------------------------------------------------------------------------------------
  1167. // TLineRightAdorner::Draw:
  1168. //----------------------------------------------------------------------------------------
  1169. #pragma segment MAAdornerRes
  1170.  
  1171. void TLineRightAdorner::Draw(TView* itsView,
  1172.                              const VRect& area)
  1173. {
  1174.     VRect itsAdornExtent;
  1175.     itsView->GetAdornExtent(itsAdornExtent);
  1176.  
  1177.     if (!(area & itsAdornExtent).Empty())        // is there something to draw?
  1178.     {
  1179.         PenState pnState;
  1180.         GetPenState(&pnState);
  1181.         CRect qdArea(itsView->ViewToQDRect(itsAdornExtent));// convert to QD coord's 
  1182.         DrawLine(vSel, qdArea.right - pnState.pnSize.h, qdArea.top, qdArea.bottom);// account for pen width 
  1183.     }
  1184. }
  1185.  
  1186.  
  1187. //========================================================================================
  1188. // CLASS TLineTopAdorner
  1189. //========================================================================================
  1190. #undef Inherited
  1191. #define Inherited TAdorner
  1192.  
  1193. #pragma segment MAAdornerNonRes
  1194. MA_DEFINE_CLASS_M1(TLineTopAdorner,
  1195.                    Inherited);
  1196.  
  1197. //----------------------------------------------------------------------------------------
  1198. // TLineTopAdorner destructor
  1199. //----------------------------------------------------------------------------------------
  1200. #pragma segment MADestructorRes
  1201.  
  1202. TLineTopAdorner::~TLineTopAdorner()
  1203. {
  1204. }
  1205.  
  1206. //----------------------------------------------------------------------------------------
  1207. // TLineTopAdorner::GetStandardSignature:
  1208. //----------------------------------------------------------------------------------------
  1209. #pragma segment MAWriteResource
  1210.  
  1211. IDType TLineTopAdorner::GetStandardSignature()    // override 
  1212. {
  1213.     return kLineTopAdorner;
  1214. }
  1215.  
  1216. //----------------------------------------------------------------------------------------
  1217. // TLineTopAdorner::Draw:
  1218. //----------------------------------------------------------------------------------------
  1219. #pragma segment MAAdornerRes
  1220.  
  1221. void TLineTopAdorner::Draw(TView* itsView,
  1222.                            const VRect& area)
  1223. {
  1224.     VRect itsAdornExtent;
  1225.     itsView->GetAdornExtent(itsAdornExtent);
  1226.  
  1227.     if (!(area & itsAdornExtent).Empty())        // is there something to draw?
  1228.     {
  1229.         CRect qdArea(itsView->ViewToQDRect(itsAdornExtent));// convert to QD coord's 
  1230.         DrawLine(hSel, qdArea.left, qdArea.top, qdArea.right);
  1231.     }
  1232. }
  1233.  
  1234.  
  1235. //========================================================================================
  1236. // CLASS TOvalAdorner
  1237. //========================================================================================
  1238. #undef Inherited
  1239. #define Inherited TAdorner
  1240.  
  1241. #pragma segment MAAdornerNonRes
  1242. MA_DEFINE_CLASS_M1(TOvalAdorner,
  1243.                    Inherited);
  1244.  
  1245. //----------------------------------------------------------------------------------------
  1246. // TOvalAdorner destructor
  1247. //----------------------------------------------------------------------------------------
  1248. #pragma segment MADestructorRes
  1249.  
  1250. TOvalAdorner::~TOvalAdorner()
  1251. {
  1252. }
  1253.  
  1254. //----------------------------------------------------------------------------------------
  1255. // TOvalAdorner::GetStandardSignature:
  1256. //----------------------------------------------------------------------------------------
  1257. #pragma segment MAWriteResource
  1258.  
  1259. IDType TOvalAdorner::GetStandardSignature()        // override 
  1260. {
  1261.     return kOvalAdorner;
  1262. }
  1263.  
  1264. //----------------------------------------------------------------------------------------
  1265. // TOvalAdorner::Draw:
  1266. //----------------------------------------------------------------------------------------
  1267. #pragma segment MAAdornerRes
  1268.  
  1269. void TOvalAdorner::Draw(TView* itsView,
  1270.                         const VRect& area)
  1271. {
  1272.     VRect itsAdornExtent;
  1273.     itsView->GetAdornExtent(itsAdornExtent);
  1274.  
  1275.     if (!(area & itsAdornExtent).Empty())        // is there something to draw?
  1276.         FrameOval(&itsView->ViewToQDRect(itsAdornExtent));
  1277. }
  1278.  
  1279.  
  1280. //========================================================================================
  1281. // CLASS TRRectAdorner
  1282. //========================================================================================
  1283. #undef Inherited
  1284. #define Inherited TAdorner
  1285.  
  1286. #pragma segment MAAdornerNonRes
  1287. MA_DEFINE_CLASS_M1(TRRectAdorner,
  1288.                    Inherited);
  1289.  
  1290. //----------------------------------------------------------------------------------------
  1291. // TRRectAdorner destructor
  1292. //----------------------------------------------------------------------------------------
  1293. #pragma segment MADestructorRes
  1294.  
  1295. TRRectAdorner::~TRRectAdorner()
  1296. {
  1297. }
  1298.  
  1299. //----------------------------------------------------------------------------------------
  1300. // TRRectAdorner::GetStandardSignature:
  1301. //----------------------------------------------------------------------------------------
  1302. #pragma segment MAWriteResource
  1303.  
  1304. IDType TRRectAdorner::GetStandardSignature()    // override 
  1305. {
  1306.     return kRRectAdorner;
  1307. }
  1308.  
  1309. //----------------------------------------------------------------------------------------
  1310. // TRRectAdorner::Draw:
  1311. //----------------------------------------------------------------------------------------
  1312. #pragma segment MAAdornerRes
  1313.  
  1314. void TRRectAdorner::Draw(TView* itsView,
  1315.                          const VRect& area)
  1316. {
  1317.     VRect itsAdornExtent;
  1318.     itsView->GetAdornExtent(itsAdornExtent);
  1319.  
  1320.     if (!(area & itsAdornExtent).Empty())        // is there something to draw?
  1321.         FrameRoundRect(&itsView->ViewToQDRect(itsAdornExtent), 16, 16);
  1322. }
  1323.  
  1324.  
  1325.  
  1326. //========================================================================================
  1327. // CLASS TAdornerList
  1328. //========================================================================================
  1329. #undef Inherited
  1330. #define Inherited TSortedDynamicArray
  1331.  
  1332. #pragma segment MAAdornerNonRes
  1333. MA_DEFINE_CLASS_M1(TAdornerList,
  1334.                    Inherited);
  1335.  
  1336. //----------------------------------------------------------------------------------------
  1337. // TAdornerList destructor
  1338. //----------------------------------------------------------------------------------------
  1339. #pragma segment MADestructorRes
  1340.  
  1341. TAdornerList::~TAdornerList()
  1342. {
  1343. }
  1344.  
  1345. //----------------------------------------------------------------------------------------
  1346. // TAdornerList::ReadFrom:
  1347. //----------------------------------------------------------------------------------------
  1348. #pragma segment MAReadResource
  1349.  
  1350. void TAdornerList::ReadFrom(TStream* aStream)    // override 
  1351. {
  1352.     Inherited::ReadFrom(aStream);
  1353.  
  1354.     // read the size of the list
  1355.     ArrayIndex itsSize;
  1356.     itsSize = aStream->ReadLong();
  1357.  
  1358.     // add in each element
  1359.     for (short count = 0; count < itsSize; ++count)
  1360.     {
  1361.         TAdorner * itsAdorner = NULL;
  1362.         AdornPriority itsPriority;
  1363.  
  1364.         itsPriority = aStream->ReadByte();
  1365.  
  1366.         if (aStream->ReadStreamObject((TObject * &)itsAdorner))
  1367.             AddAdorner(itsAdorner, itsPriority);
  1368. #if qDebugMsg
  1369.         else
  1370.             ProgramBreak("###Unknown TAdorner in TAdornerList::ReadFrom.");
  1371. #endif
  1372.  
  1373.     }
  1374. }
  1375.  
  1376. //----------------------------------------------------------------------------------------
  1377. // TAdornerList::WriteTo:
  1378. //----------------------------------------------------------------------------------------
  1379. #pragma segment MAWriteResource
  1380.  
  1381. void TAdornerList::WriteTo(TStream* aStream)    // override 
  1382. {
  1383.     Inherited::WriteTo(aStream);
  1384.  
  1385.     // write the size of the list
  1386.     ArrayIndex itsSize;
  1387.     itsSize = GetSize();
  1388.     aStream->WriteLong(itsSize);
  1389.  
  1390.     // write out each element
  1391.     if (itsSize > 0)
  1392.         for (short count = 1; count <= itsSize; ++count)
  1393.         {
  1394.             AdornerElementPtr theAdornerElementPtr;
  1395.             theAdornerElementPtr = (AdornerElementPtr)ComputeAddress(count);
  1396.  
  1397.             aStream->WriteByte(theAdornerElementPtr->priority);
  1398.  
  1399.             aStream->WriteStreamObject(theAdornerElementPtr->adorner, kStandardObject);
  1400.         }
  1401. }
  1402.  
  1403. //----------------------------------------------------------------------------------------
  1404. // TAdornerList::CompareElements:
  1405. //----------------------------------------------------------------------------------------
  1406. #pragma segment MAAdornerRes
  1407.  
  1408. CompareResult TAdornerList::CompareElements(void* Element1,
  1409.                                             void* Element2)// Override
  1410. {
  1411.     CompareResult returnVal = kItem1EqualItem2;
  1412.  
  1413.     AdornPriority priority1 = ((AdornerElementPtr)Element1)->priority;
  1414.     AdornPriority priority2 = ((AdornerElementPtr)Element2)->priority;
  1415.  
  1416.     if (priority1 > priority2)
  1417.         returnVal = kItem1GreaterThanItem2;
  1418.     else if (priority1 < priority2)
  1419.         returnVal = kItem1LessThanItem2;
  1420.  
  1421.     return returnVal;
  1422. }
  1423.  
  1424. //----------------------------------------------------------------------------------------
  1425. // TAdornerList::AddAdorner:
  1426. //----------------------------------------------------------------------------------------
  1427. #pragma segment MAAdornerRes
  1428.  
  1429. void TAdornerList::AddAdorner(TAdorner* itsAdorner,
  1430.                               AdornPriority itsPriority)
  1431. {
  1432.     // Need to avoid adding itsAdorner with itsPriority if it's already in the array, so test each
  1433.     // item in the array and then bail out if it's already in the array.
  1434.     Boolean wasInList = FALSE;
  1435.     ArrayIndex itsSize = GetSize();
  1436.     if (itsSize > 0)
  1437.         for (short count = 1; count <= itsSize; ++count)
  1438.         {
  1439.             AdornerElementPtr theAdornerElementPtr;
  1440.             theAdornerElementPtr = (AdornerElementPtr)ComputeAddress(count);
  1441.  
  1442.             if ((theAdornerElementPtr->adorner == itsAdorner) && (theAdornerElementPtr->priority == itsPriority))
  1443.             {
  1444.                 wasInList = TRUE;
  1445.                 break;                            // it's already in the list, so bail out.
  1446.             }
  1447.         }
  1448.  
  1449.     if (!wasInList)
  1450.     {
  1451.         // It's not already in the list, so insert it.
  1452.         AdornerElement anAdornerElement(itsPriority, itsAdorner);
  1453.  
  1454.         InsertElementInOrder(&anAdornerElement);
  1455.     }
  1456. }
  1457.  
  1458. //----------------------------------------------------------------------------------------
  1459. // End of UAdorners.cp
  1460.  
  1461. #pragma segment Inline
  1462.  
  1463.